Modeling Workflows as Pipelines
日本語話者には云々 radish-miyazaki.icon
再掲
code:text
bounded context: Order-Taking
workflow: "Place order" =
input: UnvalidatedOrder
output (on successs):
OrderAcknowledgmentSent
AND OrderPlaced (to send to shipping)
AND BillableOrderPlaced (to send to billing)
output (on error):
ValidationError
// ステップ 1
do ValidateOrder
If order is invalid then:
return with ValidationError
// ステップ 2
do PriceOrder
// ステップ 3
do SendAcknowledgmentToCustomer
// ステップ 4
create and return the events
各パイプでは1 つのものだけを変換する
イメージ図
https://scrapbox.io/files/669cfe57e586c3001d57b1cd.png
各ステップは独立してテスト・理解することができる
状態のモデリング
ワークフローのモデリング
上記で作成した型は、パブリック API と内部ステップで使用する型とで別ファイルにするのが良い
入力(データ + コマンド)
出力(イベント + エラー)
ワークフロー関数自身の型
各ステップの型定義